/*
* Copyright 2010 Competentum group
*
* Licensed under the GNU General Public License, Version 3.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.gnu.org/licenses/gpl.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.competentum.engines
{
	import com.competentum.io.IEngineView;
	import com.competentum.windows.Scope;
	import com.competentum.lib.engines.AbstractEngine;
	
	public class EngineWithView extends AbstractEngine
	{
		private var _views:Vector.<IEngineView> = new Vector.<IEngineView>();
		
		protected function getView(scope:Scope):IEngineView
		{
			for each (var view:IEngineView in _views)
			{
				if (view.scope == scope)
				{
					return view;
				}
			}
			return null;
		}
		
		private function getViewIndex(scope:Scope):int
		{
			for (var i:int = 0; i < _views.length; i ++ )
			{
				if (_views[i].scope == scope)
				{
					return i;
				}
			}
			return -1;
		}
		
		public function addView(view:IEngineView):void
		{
			_views.push(view);
		}
		
		public function removeViewAt(scope:Scope):void
		{
			if (_views.length > 1)
			{
				_views.splice(getViewIndex(scope), 1);
			}
		}
		
		public function EngineWithView(type:String=null)
		{
			super(type);
		}
	}
}